L3GO (Layout using Gridded Glyph Geometry Objects) is an ongoing project for improving the manufacturability of VLSI designs. L3GO provides a restricted set of objects or patterns that describes circuit connectivity and devices, referred to as glyphs. L3GO has three types of glyphs, including:
1. Stick glyphs, which are 1-dimensional line segments drawn between two grid points, e.g., used to describe FET gates or for interconnections. The attached properties of a stick glyph include which layer the stick belongs to, the start and end point, and a target width;
2. Contact glyphs, which are 0-dimensional points lying at grid points, e.g., used to describe vertical interconnections (contacts and vias). The attached properties of a contact glyph include which layer the contact belongs to, and parameters that specify how contacts are to be arranged in a matrix, e.g. the number of rows and columns in the matrix, the size of each contact, the horizontal and vertical distances between columns and rows, respectively and an optional offset of the matrix center relative to the glyph position; and
3. Area glyphs, which are 2-dimensional, axis aligned rectangles whose vertices are on grid points, e.g., used to describe diffusion regions. In addition to their specific attributes, glyphs can carry ‘design intent’ attributes, e.g. net names, ratings of their importance etc. A process called elaboration turns sets of glyphs into geometry (pre-data-prep mask shapes).
A pattern describes a glyph configuration, e.g., a contact glyph with certain properties sitting on a stick glyph with another set of properties. Elaboration creates shapes for this configuration based on a set of parameters, e.g., elaboration may create a pad on an M1 stick and four redundant vias on the pad. Given the computational complexity of converting glyph patterns in VLSI designs, the identification of predefined or matching patterns is a key component of the elaboration process.
The manipulation of L3GO designs faces two distinct problems, variability in patterns, and resolution of ambiguities. To support pattern based design manipulation that considers interaction between multiple design features, it is impractical to use only patterns with explicit or fixed sizes. To cover all potential size configurations would require tens of thousands of patterns. Thus, patterns have to support a specification of variable properties, e.g., distances, whose values are determined when a placement of a pattern based on topological criteria is found.
In addition, there is often a basic modification that applies in a majority of situations, e.g., extending the end of a line. But under certain circumstances, e.g., if there is a specific interaction with the line end, a different solution is desired. In this situation, one pattern is a refinement of another, so that both patterns match. Mechanisms are necessary that allow the construction of an unambiguous solution for a complex set of overlapping patterns.